#ifndef PORTAL_H_
#define PORTAL_H_

#include <gtkmm.h>
#include <iostream>
#include <string>
#include "Atributoconsulta.h"

#include "Util.h"

class Cliente;
class GestorArchivoConfiguracion;
class Respuesta;



class Portal:public Gtk::Table {
private:
	unsigned int filaActual;
	unsigned int numeroConsulta;
	std::vector<Gtk::ComboBoxText*> combos;	// contiene los combos q fueron seleccionados
	unsigned int cantCombos;
	GestorArchivoConfiguracion *gestorConfig;
	Cliente* cliente;
	unsigned int numeroTabla;

protected:
	Gtk::Label labelFiltros;
	std::vector<std::string> filtros;
	std::map<std::string, Gtk::ComboBoxText*> mapaInputs;

	void on_cambios_comboBox(Gtk::ComboBoxText* combo);


public:
	Portal(unsigned int filas, unsigned int numTabla);
	void setValoresFiltro(std::vector<std::string>& values);
	void setInputs(std::string& nombreInput, std::vector<std::string>& values);
	virtual ~Portal();
	void setNumeroConsulta(unsigned int numero);
	void setGestorConfiguracion(GestorArchivoConfiguracion* gestor);
	void setCliente(Cliente* cli);
	// ESTE METODO LE DICE A CADA UNO DE SUS COMBOS Q PIDAN AL SERVER DATOS APARA LLENARSE
	void cargarCombos();
	void setRespuesta(Respuesta* respuesta);
private:
	void obtenerValoresFiltro(const std::string& origen, std::string& id_columna, std::string& valor_columna);
	void parsearLineasRespuesta(std::string& linea, std::vector<Atributo_consulta>& atribs);
};

#endif /* PORTAL_H_ */
